package com.example.chandao.common.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

@Getter
@AllArgsConstructor
public enum BusCode {

    // 登录相关错误提示
    USER_EP_NOT_SAME("系统存在邮箱【{}】，手机号【{}】的账号，请更改邮箱或手机号与系统保持一致"),
    USER_NON_EXIST("账号不存在"),
    USER_DISABLE("账号已被禁用"),
    ACCOUNT_PWD_ERROR("账号或密码错误"),
    OLD_PWD_ERROR("旧密码错误"),
    NEW_PWD_SAME("新密码前后输入不一致"),
    VERIFY_CODE_ERROR("验证码错误或已失效"),
    LOGIN_CODE_ERROR("验证码错误或已失效"),
    LOGIN_PWD_LOCK("密码错误次数过多，请10分钟后重试"),

    // 用户角色错误提示
    USER_EMAIL_EXIST("系统已存在该邮箱，请重新输入"),
    USER_PHONE_EXIST("系统已存在该手机号码，请重新输入"),
    ROLE_NAME_EXIST("角色名称已存在，请重新输入"),
    USER_SITE_EMPTY("用户所属机构不能为空"),
    ROLE_USER_EXIST("当前角色已被分配到用户，不允许删除"),
    ROLE_DEL_ERROR("当前角色为系统内置角色，不允许删除"),
    USER_SITE_ERROR("当前用户环境异常，请联系管理员处理"),

    // 企业相关错误提示
    COMPANY_NAME_EXIST("企业名称已存在，请重新输入"),
    COMPANY_NOT_EXIST("用户所属企业不存在，请联系管理员处理"),
    COMPANY_DISABLE("用户所属企业已禁用，不允许登录"),

    // 申办方相关错误提示
    SPONSOR_NAME_EXIST("申办方名称已存在，请重新输入"),
    SPONSOR_DATA_EXIST("当前申办方已被项目引用，不允许删除"),

    // 项目相关错误提示
    PROJECT_CODE_EXIST("项目编码已存在，请重新输入"),
    PROJECT_NAME_EXIST("项目名称已存在，请重新输入"),
    PROJECT_NOT_EXIST("项目不存在，请联系管理员处理"),
    PROJECT_SPONSOR_EMPTY("项目申办方不能为空"),
    PROJECT_DATA_ERROR("当前项目【{}】环境已存在表单数据，不允许删除"),
    PROJECT_JOIN_ERROR("当前Token已和项目【{}】对接，请检查配置"),
    PROJECT_ADMIN_ERROR("当前项目下最后一个管理员，不允许删除"),
    PROJECT_TAR_EXIST("目标项目不存在或已被删除，请检查！"),
    PROJECT_ID_ERROR("项目ID为【{}】的项目不存在"),
    PROJECT_SYNC_SAME("不能当前项目同步自身，请重新选择！"),


    // 机构相关错误提示
    SITE_NAME_EXIST("机构名称已存在，请重新输入"),
    SITE_CODE_EXIST("中心号已存在，请重新输入"),
    SITE_EXIST_ERROR("当前机构已在该项目下"),
    SITE_PROJ_EXIST("当前机构下已参与项目，不允许删除"),
    SITE_USER_EXIST("当前机构已存在用户，不允许删除"),
    SITE_DATA_EXIST("当前机构下已注册患者，不允许删除"),
    SITE_USE_EXIST("当前机构已被配置到访视，不允许删除"),
    SITE_CODE_REPEAT("中心号【{}】在项目下已经存在，请检查"),
    SITE_CODE_EMPTY("中心号不能为空，请检查"),
    SITE_NAME_ERROR("不存在名称为【{}】的机构，请检查"),
    SITE_COM_EXIST("名称为【{}】的机构在项目下已经存在，请检查"),
    IMPORT_DATA_EMPTY("导入的文件数据为空"),
    IMPORT_SITE_REPEAT("导入文件中机构名称重复或为空"),
    IMPORT_SITE_CODE_REPEAT("导入文件中中心号重复"),


    // 表单相关错误提示
    FORM_CODE_EXIST("表单编码已存在，请重新输入"),
    FORM_NOT_EXIST("表单不存在，请联系管理员处理"),
    FORM_DATA_EXIST("当前表单已产生数据，不允许操作"),
    FORM_ITEM_ERROR("当前表单未配置元素，请先配置元素"),
    FORM_DATA_ERROR("表单数据不存在，请联系管理员处理"),
    FORM_COPY_EXPIRE("表单复制请求已过期"),
    FORM_STATUS_ERROR("当前表单未发布，请先发布表单"),
    FORM_STATUS_DATA("当前表单已失效，无需填写"),
    FORM_SIGN_ERROR("非法请求"),
    FORM_VISIT_USE("当前表单已关联访视，不允许删除"),
    FORM_VISIT_SEND_USE("当前表单已配置到访视通知，不允许删除"),
    FORM_NAME_EXIST("表单标题已存在，请重新输入"),
    FORM_ITEM_USED_ERROR("不能删除被配置到访视通知的元素"),
    FORM_LIST_EMPTY("当前项目下没有任何表单"),
    FORM_DATA_SUBMIT("当前表单已提交，请勿重复提交"),
    FORM_EXPORT_MANY("所选表单数据量过大，请减少表单数量或缩短时间范围"),

    // 数据相关错误提示
    DATA_REPEAT_AUDIT("数据【{}】已审核，请勿重复操作"),
    DATA_REPEAT_IGNORE("数据【{}】已忽略，请勿重复操作"),
    DATA_REPEAT_REVOKE("数据【{}】已撤回，请勿重复操作"),
    DATA_REPEAT_QUESTION("当前数据已质疑，请勿重复操作"),

    // 患者相关错误提示
    SUBJECT_SETTING_ERROR("字段名称不能重复，请检查重新输入"),
    SUBJECT_SETTING_EMPTY("患者基本信息未配置，请先配置"),
    SUBJECT_DATA_ERROR("录入数据与患者注册信息不一致，请检查"),
    SUBJECT_OPENID_EMPTY("微信用户openId不能为空"),
    SUBJECT_DATA_EMPTY("基本信息不能为空"),
    SUBJECT_INFO_EXIST("当前微信用户已在当前项目下注册"),
    SUBJECT_SECRET_ERROR("该二维码信息有误，请换码扫描"),
    SUBJECT_INFO_ERROR("当前项目下已存在患者，不允许操作"),
    SUBJECT_DATA_EXIST("当前患者已提交数据，不允许删除"),
    SUBJECT_STATUS_ERROR("患者已绑定，不允许删除"),
    SUBJECT_STATUS_REPEAT("患者已绑定，请勿重复操作"),
    SUBJECT_UNBIND_REPEAT("患者已解绑，请勿重复操作"),
    SUBJECT_STATUS_UNBIND("当前患者未绑定，请先绑定患者"),
    SUBJECT_UNBIND("当前患者已被解绑，无需填写"),
    SUBJECT_INFO_REPEAT("患者信息已存在，请重新录入"),
    SUBJECT_NO_REPEAT("患者编号已存在，请重新录入"),
    SUBJECT_NO_EMPTY("请输入患者编号"),
    SUBJECT_LIST_EMPTY("当前项目下无任何已绑定的患者"),
    SUBJECT_SEND_EXEC("当前患者存在正在执行的通知计算任务，请稍后再试！"),

    // 访视相关错提示
    VISIT_INFO_ERROR("访视信息不存在"),
    VISIT_NAME_EXIST("访视名称已存在，请重新输入"),
    VISIT_NOTICE_EXIST("当前访视已通知患者，不允许删除"),
    VISIT_INFO_EMPTY("名称为【{}】的访视信息不存在，请检查"),
    VISIT_FORM_ERROR("ID为【{}】的表单信息不存在或未发布，请检查"),
    VISIT_BASE_CODE_ERROR("提醒文本为【{}】的基线期元素UUID为空，请检查"),
    VISIT_SEND_TIME_ERROR("时间为【{}】的格式不正确，请检查"),
    VISIT_SEND_FORM_ERROR("访视【{}】下不存在ID为【{}】的表单，请检查"),
    VISIT_SEND_RED_EMPTY("通知编号为【{}】的通知不存在，请检查"),
    VISIT_SEND_RED_BIND("通知编号为【{}】的通知已被其他红包绑定，请检查"),
    VISIT_SEND_RED_ONLY("通知编号为【{}】的通知为仅通知，无法关联红包，请检查"),
    VISIT_SEND_BASE_ERROR("表单ID为【{}】的表单下不存在UUID为【{}】的元素，请检查"),
    VISIT_RED_SECRET_EMPTY("红包口令不能为空，请检查"),
    VISIT_RED_LABEL_EMPTY("红包标签不能为空，请检查"),
    VISIT_SEND_IMPORT("导入出错了，请检查文件中数据是否正确"),
    VISIT_SEND_UNIT_ERROR("提醒文本为【{}】的通知基线类型与间隔期单位不匹配"),
    VISIT_SEND_BASE_TYPE_EMPTY("提醒文本为【{}】的通知基线类型为空"),
    VISIT_SEND_INT_UNIT_EMPTY("提醒文本为【{}】的通知间隔期单位为空"),
    VISIT_SEND_WIND_TYPE_EMPTY("提醒文本为【{}】的通知窗口期类型为空"),
    VISIT_SEND_WIND_NUM_EMPTY("提醒文本为【{}】的通知窗口期数量为空"),
    VISIT_SEND_WIND_UNIT_EMPTY("提醒文本为【{}】的通知窗口期单位为空"),
    VISIT_SEND_WIND_TIME_EMPTY("提醒文本为【{}】的通知窗口期时间为空"),
    VISIT_SEND_PREV_CODE_EMPTY("提醒文本为【{}】的通知前置通知编号不存在"),
    VISIT_SEND_SUBJ_NO_ERROR("编号为【{}】的患者不存在或未绑定，请检查"),
    VISIT_FORM_EXIST("表单【{}】已属于当前访视，请勿重复添加"),
    VISIT_SEND_ENABLE("当前通知已启用，不允许编辑，请禁用后再操作"),
    VISIT_SEND_EXEC("当前通知正在处理计算通知任务，请稍后再试！"),


    VISIT_PROJ_ERROR("项目ID不能为空"),
    VISIT_SEND_RED_ERROR("当前红包未关联任何通知，请先配置关联通知"),
    VISIT_FORM_EMPTY("当前项目所有访视下未配置表单，表单ID填写错误"),
    VISIT_FORM_LIST_EMPTY("当前项目所有访视下未配置表单"),
    VISIT_SEND_RED_EXIST("当前通知已关联红包，不允许删除"),
    VISIT_SEND_RED_WRITE("当前通知已关联红包，不支持修改仅通知，请确认红包配置"),
    VISIT_SEND_DEL_ERROR("通知编号为【{}】的通知已关联红包，不允许删除"),
    VISIT_SEND_DEL_PREV("当期通知已被通知【{}】设为前置通知，不允许删除"),
    VISIT_SEND_DELETE("当前通知已失效，无需填写"),
    VISIT_FORM_BASE_ERROR("患者信息表已配置到访视【{}】下的【{}】表单，请检查"),
    RED_LABEL_EXIST("红包标签【{}】已存在，请重新输入"),
    RED_SECRET_EXIST("红包口令【{}】已存在，请重新输入"),
    VISIT_JOIN_EXIST("当前访视已对接到EDC【{}】访视，请勿重复对接"),
    VISIT_LIST_EMPTY("当前项目下无任何访视"),
    VISIT_SEND_PREV_ERROR("请先完成【{}】的任务"),

    // 研究者移动端
    MOVE_AUTH_LOGIN("当前人员没有权限操作"),
    SYNC_CHAT_ERROR("同步出错啦，请联系管理员处理"),

    // EDC数据导入
    EDC_EXCEL_ERROR("文件数据不正确，请根据导入模板检查数据！"),
    EDC_EXCEL_FOLDER_OID_ERROR("Folder OID 不能为空，请检查！"),
    EDC_EXCEL_FORM_OID_ERROR("Form OID 不能为空，请检查！"),
    EDC_EXCEL_FORM_NAME_ERROR("Form Name 不能为空，请检查！"),
    ;

    private final String msg;

}
